package Demo3;

public class OutClass {
    private int a;
    static int b;
    int c;
    InnerClass innerClass = new InnerClass();
    public void methodA(){
        a = 10;
        innerClass.d = 100;
    }
    //成员位置定义：未被static修饰 --> 实例化内部类
    public class InnerClass{
        int c;
        int d;
        public void methodInner(){
            //在实例内部类中可以直接访问外部类中：任意访问修饰符修饰的变量
            a = 100;
            b = 200;

            methodA();
            //如果外部类和实例内部类中具有相同名称成员时，优先访问的是内部类自己的（类比方法）
            c = 300;

            //如果要访问外部类同名成员时，必须：外部类名称.this.同名成员名字
            OutClass.this.c = 400;
        }
    }

    //成员位置定义：被static修饰 --> 静态内部类
    static class InnerClass2{

    }

    public void method() {
        //方法中也可以定义内部类 --> 局部内部类：几乎不用
        class InnerClas3{

        }
    }
}
